/**
 * @description 校验用的中间件
 * @author 印明帝
 */
const { ErrorModel } = require('../model/ResModel')
const { jsonSchemaFileInfo } = require('../model/errorInfo')
/**
  * 校验用的中间件
  * @method validator
  * @param {Function} validateFn //校验函数
  * @returns {Function}
  */
function genValidator(validateFn) {
  // 返回的中间件函数
  async function validator(ctx,next) {
    let data = ctx.request.body
    let err = validateFn(data)
    if(err) {
      ctx.body =  new ErrorModel(jsonSchemaFileInfo)
      return
    }
    // 验证成功继续派发路由
    await next()
  }
  return validator
}

module.exports = {
  genValidator
}